package com.lxk.map.gd.model;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
public class GdReGeoResp {
    @com.fasterxml.jackson.annotation.JsonProperty("status")
    private String status;
    @com.fasterxml.jackson.annotation.JsonProperty("info")
    private String info;

    @com.fasterxml.jackson.annotation.JsonProperty("regeocode")
    private List<GdReGeoResp.GdReGeoModel> regeocode;

    @NoArgsConstructor
    @Data
    public static class GdReGeoModel {
        @com.fasterxml.jackson.annotation.JsonProperty("addressComponent")
        private GdReGeoResp.GdReGeoModel.AddressComponentModel addressComponent;
        @com.fasterxml.jackson.annotation.JsonProperty("roads")
        private List<GdReGeoResp.GdReGeoModel.RoadModel> roads;
        @com.fasterxml.jackson.annotation.JsonProperty("roadinters")
        private List<GdReGeoResp.GdReGeoModel.RoadinterModel> roadinters;
        @com.fasterxml.jackson.annotation.JsonProperty("pois")
        private List<GdReGeoResp.GdReGeoModel.PoiModel> pois;
        @com.fasterxml.jackson.annotation.JsonProperty("aois")
        private List<GdReGeoResp.GdReGeoModel.AoiModel> aois;


        @NoArgsConstructor
        @Data
        public static class AddressComponentModel {
            @com.fasterxml.jackson.annotation.JsonProperty("country")
            private String country;
            @com.fasterxml.jackson.annotation.JsonProperty("province")
            private String province;
            @com.fasterxml.jackson.annotation.JsonProperty("city")
            private List<String> city;
            @com.fasterxml.jackson.annotation.JsonProperty("citycode")
            private String citycode;
            @com.fasterxml.jackson.annotation.JsonProperty("district")
            private String district;
            @com.fasterxml.jackson.annotation.JsonProperty("adcode")
            private String adcode;
            @com.fasterxml.jackson.annotation.JsonProperty("township")
            private String township;
            @com.fasterxml.jackson.annotation.JsonProperty("towncode")
            private String towncode;
            @com.fasterxml.jackson.annotation.JsonProperty("neighborhood")
            private GdReGeoResp.GdReGeoModel.NeighborhoodModel neighborhood;
            @com.fasterxml.jackson.annotation.JsonProperty("building")
            private GdReGeoResp.GdReGeoModel.BuildingModel building;
            @com.fasterxml.jackson.annotation.JsonProperty("streetNumber")
            private GdReGeoResp.GdReGeoModel.StreetNumberModel streetNumber;
            @com.fasterxml.jackson.annotation.JsonProperty("seaArea")
            private String seaArea;

            @com.fasterxml.jackson.annotation.JsonProperty("businessAreas")
            private List<GdReGeoResp.GdReGeoModel.BusinessAreasModel> businessAreas;
        }

        @NoArgsConstructor
        @Data
        public static class NeighborhoodModel {
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private List<?> name;
            @com.fasterxml.jackson.annotation.JsonProperty("type")
            private List<?> type;
        }

        @NoArgsConstructor
        @Data
        public static class BuildingModel {
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private List<?> name;
            @com.fasterxml.jackson.annotation.JsonProperty("type")
            private List<?> type;
        }

        @NoArgsConstructor
        @Data
        public static class StreetNumberModel {
            @com.fasterxml.jackson.annotation.JsonProperty("street")
            private String street;
            @com.fasterxml.jackson.annotation.JsonProperty("number")
            private String number;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
            @com.fasterxml.jackson.annotation.JsonProperty("direction")
            private String direction;
            @com.fasterxml.jackson.annotation.JsonProperty("distance")
            private String distance;
        }

        @NoArgsConstructor
        @Data
        public static class BusinessAreasModel {
            @com.fasterxml.jackson.annotation.JsonProperty("businessArea")
            private String businessArea;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private String name;
            @com.fasterxml.jackson.annotation.JsonProperty("id")
            private String id;
        }

        @NoArgsConstructor
        @Data
        public static class RoadModel {
            @com.fasterxml.jackson.annotation.JsonProperty("id")
            private String id;
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private String name;
            @com.fasterxml.jackson.annotation.JsonProperty("distance")
            private String distance;
            @com.fasterxml.jackson.annotation.JsonProperty("direction")
            private String direction;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
        }

        @NoArgsConstructor
        @Data
        public static class RoadinterModel {
            @com.fasterxml.jackson.annotation.JsonProperty("distance")
            private String distance;
            @com.fasterxml.jackson.annotation.JsonProperty("direction")
            private String direction;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
            @com.fasterxml.jackson.annotation.JsonProperty("first_id")
            private String firstId;
            @com.fasterxml.jackson.annotation.JsonProperty("first_name")
            private String firstName;
            @com.fasterxml.jackson.annotation.JsonProperty("second_id")
            private String secondId;
            @com.fasterxml.jackson.annotation.JsonProperty("second_name")
            private String secondName;
        }

        @NoArgsConstructor
        @Data
        public static class PoiModel {
            @com.fasterxml.jackson.annotation.JsonProperty("ID")
            private String id;
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private String name;
            @com.fasterxml.jackson.annotation.JsonProperty("type")
            private String type;
            @com.fasterxml.jackson.annotation.JsonProperty("tel")
            private List<String> tel;
            @com.fasterxml.jackson.annotation.JsonProperty("distance")
            private String distance;
            @com.fasterxml.jackson.annotation.JsonProperty("direction")
            private String direction;
            @com.fasterxml.jackson.annotation.JsonProperty("address")
            private String address;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
            @com.fasterxml.jackson.annotation.JsonProperty("businessarea")
            private String businessarea;
        }

        @NoArgsConstructor
        @Data
        public static class AoiModel {
            @com.fasterxml.jackson.annotation.JsonProperty("ID")
            private String id;
            @com.fasterxml.jackson.annotation.JsonProperty("name")
            private String name;
            @com.fasterxml.jackson.annotation.JsonProperty("adcode")
            private String adcode;
            @com.fasterxml.jackson.annotation.JsonProperty("location")
            private String location;
            @com.fasterxml.jackson.annotation.JsonProperty("area")
            private String area;
            @com.fasterxml.jackson.annotation.JsonProperty("distance")
            private String distance;
            @com.fasterxml.jackson.annotation.JsonProperty("type")
            private String type;
        }
    }
}
